﻿// Copyright (c) Appeon. All rights reserved.
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.

using System;

namespace SnapObjects.Data
{
    internal class TemplateImportDataParserFactory
    {
        public static ITemplateImportDataParser Create(DataFormat dataFormat, Type modelType)
        {
            switch (dataFormat)
            {
                case DataFormat.Json:
                {
                    var type = typeof(JsonTemplateImportDataParser<>).MakeGenericType(modelType);

                    return (ITemplateImportDataParser)Activator.CreateInstance(type);
                }
                case DataFormat.Xml:
                {
                    var type = typeof(XmlTemplateImportDataParser<>).MakeGenericType(modelType);

                    return (ITemplateImportDataParser)Activator.CreateInstance(type);
                }
                default:
                {
                    throw new NotSupportedException(dataFormat.ToString());
                }
            }
        }
    }
}
